Zmena vlastnika IB, FB
Otázka od: Richard Kejval
11. 11. 2002 16:00
Ahoj,
potrebuji zmenit vlastnika databaze uz u existujici databaze, ktera je
uz dost obsahla a nechce se mi data prenaset do nove vytvorene.
Navrhl jsem proceduru, ktera se zda, ze vlastnika uspesne vymeni,
ale preci jen bych chtel slyset nazor nejakeho guru, nez to udelam
nad ostrymi daty. Co vy na to ?
CREATE PROCEDURE CHANGE_OWNER (
OLD_OWNER VARCHAR(31),
NEW_OWNER VARCHAR(31))
AS
declare variable RDB$USER CHAR(31) CHARACTER SET UNICODE_FSS;
declare variable RDB$PRIVILEGE CHAR(6) CHARACTER SET NONE;
declare variable RDB$GRANT_OPTION SMALLINT;
declare variable RDB$RELATION_NAME CHAR(31) CHARACTER SET UNICODE_FSS;
declare variable RDB$FIELD_NAME CHAR(31) CHARACTER SET UNICODE_FSS;
declare variable RDB$USER_TYPE SMALLINT;
declare variable RDB$OBJECT_TYPE SMALLINT;
begin
For
Select
RDB$USER, RDB$PRIVILEGE, RDB$GRANT_OPTION, RDB$RELATION_NAME,
RDB$FIELD_NAME, RDB$USER_TYPE, RDB$OBJECT_TYPE
from RDB$USER_PRIVILEGES
where
RDB$Grantor=:Old_Owner
into
:RDB$USER, :RDB$PRIVILEGE, :RDB$GRANT_OPTION, :RDB$RELATION_NAME,
:RDB$FIELD_NAME, :RDB$USER_TYPE, :RDB$OBJECT_TYPE do
begin
if (RDB$USER=Old_Owner) then
RDB$USER=New_Owner;
INSERT INTO RDB$USER_PRIVILEGES
(RDB$USER, RDB$GRANTOR, RDB$PRIVILEGE, RDB$GRANT_OPTION,
RDB$RELATION_NAME, RDB$FIELD_NAME, RDB$USER_TYPE, RDB$OBJECT_TYPE)
Values
(:RDB$USER, :New_Owner, :RDB$PRIVILEGE, :RDB$GRANT_OPTION,
:RDB$RELATION_NAME, :RDB$FIELD_NAME, :RDB$USER_TYPE, :RDB$OBJECT_TYPE);
end
update rdb$procedures a
set
a.rdb$owner_name=:New_Owner
where
a.rdb$owner_name=:Old_Owner;
update rdb$relations a
set
a.rdb$owner_name=:New_Owner
where
a.rdb$owner_name=:Old_Owner;
update rdb$roles a
set
a.rdb$owner_name=:New_Owner
where
a.rdb$owner_name=:Old_Owner;
delete from rdb$user_privileges a
where
a.rdb$grantor=:Old_Owner;
end
S pozdravem
ing. Richard Kejval
IC Software s.r.o
Mobil: +420602477679
Odpovedá: Pavel Cisar
12. 11. 2002 10:25
Haj hou!
Na prvni pohled to vypada vporadku. Ostatne netreba se ptat dopredu,
proste to zokousejte na kopii databaze (coz je stejne doporuceny postup).
S pozdravem
Pavel Cisar
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase
Odpovedá: Richard Kejval
12. 11. 2002 11:08
Ahoj,
To jsem samozrejme udelal, myslel jsem jen abych to neudelal na ostrych
datech a treba po mesici az budu chtit treba zalohovat (take jsem zkousel),
nebo udelat jinou akci (zmenu struktury atd...), kde budu muset byt jako
vlastnik DB, tak abych nezjistil, ze jsem v haji a cesta neni zpet.
A snad by se to mohlo i nekomu hodit, protoze uz se to tady resilo,
ale myslim, ze bez vysledku.
S pozdravem
ing. Richard Kejval
IC Software s.r.o
Mobil: +420602477679
> Haj hou!
>
> Na prvni pohled to vypada vporadku. Ostatne netreba se ptat dopredu,
> proste to zokousejte na kopii databaze (coz je stejne doporuceny postup).
>
> S pozdravem
> Pavel Cisar
> Mobil: 724 281429
> http://www.ibphoenix.cz
> Vse co potrebujete pro Firebird a InterBase
>
>